package com.fivestar.finance.app.api;

import com.fivestar.finance.app.bean.HttpResponse;
import com.fivestar.finance.app.bean.req.FixOrderReq;
import com.fivestar.finance.app.bean.resp.DataPage;
import com.fivestar.finance.app.bean.resp.OrderDetailResp;
import com.fivestar.finance.app.bean.resp.OrderListResponse;

import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.Field;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
import rx.Observable;

/**
 * 订单相关接口
 *
 * @author Derek.Kidd
 * @version V1.0.0
 * @date 2016-04-18 17:48
 */
public interface OrderApi {
    /**
     * @param pageNo     当前页码，返回分页后的列表数据
     * @param pageSize   每页显示数据条数
     * @param orderState 订单状态
     * @return
     */
    @GET("orderAction/order")
    Observable<HttpResponse<DataPage<OrderListResponse>>> getOrders(@Query("pageNo") int pageNo,
                                                                    @Query("pageSize") int
                                                                            pageSize, @Query
                                                                            ("orderState") int
            orderState);

    /**
     * 获取订单详情
     *
     * @param orderId
     * @return
     */
    @GET("orderAction/order/{orderId}")
    Observable<HttpResponse<OrderDetailResp>> getOrderDetail(@Query("orderId") String orderId);

    /**
     * 取消订单
     *
     * @param type
     * @param orderId
     * @return
     */
    @DELETE("orderAction/order/{id}")
    Observable<HttpResponse<String>> cancelOrder(@Query("type") int type, @Query("id") String orderId);

    /**
     * 商户修改订单
     *
     * @param fixOrderReq
     * @return
     */
    @POST("orderAction/order")
    Observable<HttpResponse<String>> fixOrder(@Body FixOrderReq fixOrderReq);

    /**
     * 商户完成订单
     *
     * @param orderId
     * @return
     */
    @POST("orderAction/order/complete/{orderId}")
    Observable<HttpResponse<String>> completeOrder(@Field("orderId") String orderId);


    /**
     * 司机接受任务
     *
     * @param jobId
     * @return
     */
    @POST("orderAction/order")
    Observable<HttpResponse<String>> acceptTask(@Field("jobId") String jobId);

    /**
     * 司机开始配送
     *
     * @param orderId
     * @return
     */
    @POST("orderAction/order/work/{id}")
    Observable<HttpResponse<String>> doDelivery(@Field("id") String orderId);

    /**
     * 司机修改货价
     *
     * @param orderId 订单id
     * @param billType 计费方式
     * @param newNum 新的数量（按件计费方式传）
     * @param newPrice 新的货价（按货价计费当时传）
     * @return
     */
    @POST("orderAction/order/price")
    Observable<HttpResponse<String>> fixOrderPrice(@Field("orderId") String orderId, @Field("billType") String billType, @Field("newNum") String newNum, @Field("newPrice") String newPrice);


}
